home *** CD-ROM | disk | FTP | other *** search
- /****************************************************/
- /* */
- /* File: windows.c */
- /* */
- /* Program: Imageer */
- /* */
- /* By: Jason Hodges-Harris */
- /* */
- /* Created: 26/10/95 00:00:00 AM */
- /* */
- /* Version: 1.0.0d3 */
- /* */
- /* Copyright: © 1995-96 Apple Computer, Inc., */
- /* all rights reserved. */
- /* */
- /****************************************************/
-
-
- /**** Macintosh Toolbox Headers *****/
-
- #ifndef __CONTROLS__
- #include <Controls.h>
- #endif
-
- #ifndef __DEVICES__
- #include <Devices.h>
- #endif
-
- #ifndef __DIALOGS__
- #include <Dialogs.h>
- #endif
-
- #ifndef __GXENVIRONMENT__
- #include <GXEnvironment.h>
- #endif
-
- #ifndef __GXGRAPHICS__
- #include <GXGraphics.h>
- #endif
-
- #ifndef __LOWMEM__
- #include<LowMem.h>
- #endif
-
- #ifndef __PALETTES__
- #include <Palettes.h>
- #endif
-
- #ifndef __QDOFFSCREEN__
- #include <QDOffscreen.h>
- #endif
-
- #ifndef __TEXTUTILS__
- #include <TextUtils.h>
- #endif
-
- #ifndef __TOOLUTILS__
- #include <ToolUtils.h>
- #endif
-
- #ifndef __WINDOWS__
- #include <Windows.h>
- #endif
-
-
- /**** Application headers and prototypes ****/
-
-
- #ifndef __IMAGEERAPPHEADER__
- #include "Imageer.app.h"
- #endif
-
- #ifndef __IMAGEERPROTOSHEADER__
- #include "Imageer.protos.h"
- #endif
-
-
- /***** Global Variables *****/
-
- extern short gNumOpenWindows; // number of open document windows
-
-
- /* The DisplayAlert() function is a generic modal dialog display function
- which uses GetStdFilterProc() and SetDialogDefaultItem() to
- automatically get the standard filter and outline the default DITL item.
- These 'undocumented' functions are available in system 7.0 or later. */
-
- #pragma segment windows
- long DisplayAlert(short dialogID,short errStrID,short StrIDindex)
- {
- GrafPtr savePort = nil;
- DialogPtr myDialog = nil;
- ModalFilterUPP theFilter = nil;
- Str255 theTextStr;
- short alertResponse;
-
- myDialog = GetNewDialog(dialogID,nil,((WindowPtr)-1L)); // get dialog resource
- GetPort(&savePort);
- SetPort (myDialog);
- if (GetStdFilterProc(&theFilter) !=noErr)
- DebugStr("\pFailed to get standard dialog filter.");
- SetDialogDefaultItem(myDialog,1);
- /* If the errStrID variable contains 0, the dialog doesn't
- require any text from a STR# resource */
- if (errStrID!=0) // get STR# resource text
- {
- GetIndString(theTextStr,errStrID,StrIDindex);
- ParamText(theTextStr,(ConstStr255Param)kNull_Str,
- (ConstStr255Param)kNull_Str,(ConstStr255Param)kNull_Str);
- }
- do{
- ModalDialog(theFilter,&alertResponse);
- } while (alertResponse==0);
- DisposeDialog(myDialog);// dispose dialog mem allocation
- SetPort(savePort);
- return alertResponse; // return dialog return value
- }
-
-
- // Drag the window from the position passed in the mouseLoc parameter
-
- #pragma segment windows
- void DragSelWind(WindowPtr window,Point mouseLoc)
- {
- Rect dragBounds;
-
- dragBounds=(**GetGrayRgn()).rgnBBox;
- DragWindow(window,mouseLoc,&dragBounds);
- }
-
-
- // Close the active window which had it's close box selected
- #pragma segment windows
- void DoGoAwayWind(WindowPtr window,Point mouseLoc)
- {
- if(TrackGoAway(window,mouseLoc))
- {
- if (window!=nil)
- {
- // Test for a dialog window and hide if selected
- if ((((WindowPeek)window)->windowKind)==2)
- HideWindow(window);
- // Test for a Desk Accessory window and Close.
- else if ((((WindowPeek)window)->windowKind)<0)
- CloseDeskAcc(((WindowPeek)window)->windowKind);
- // Test for an application window.
- else if ((((WindowPeek)window)->windowKind)==8)
- {
- // Handle application windows
- DisposeImageWindow (window);
- }
- }
- }
- }
-
-
- /**** create new image window ****/
-
- // Create a new window complete with scroll bar controls
- // position staggered at max possible size and resize to
- // be completely visible on the main screen.
-
- #pragma segment windows
- OSErr CreateImageWindow (ImageDocHndl theWindDocHndl)
- {
- ImageDocHndl theWindowRefcon = nil;
- PaletteHandle theWPalette = nil;
- CWindowPtr theCWindow;
- Point theWindowOffset;
- short maxXsize,
- maxYsize;
- OSErr error = noErr;
-
- theCWindow = (CWindowPtr)GetNewCWindow(rGenWindow,nil,(WindowPtr)-1L);
- SetWRefCon((WindowPtr)theCWindow,(long)theWindDocHndl); // set window refcon to doc handle
- SetWTitle((WindowPtr)theCWindow,(**theWindDocHndl).theImageFileReply.sfFile.name);
- CalcMaxImageWindowSize(theWindDocHndl);
- theWindowOffset = CalcNextWindowPosition(theWindDocHndl);
- SizeWindow((WindowPtr)theCWindow,
- (**theWindDocHndl).theMaxWindowSize.right - (**theWindDocHndl).theMaxWindowSize.left,
- (**theWindDocHndl).theMaxWindowSize.bottom - (**theWindDocHndl).theMaxWindowSize.top,false);
- MoveWindow((WindowPtr)theCWindow,theWindowOffset.h,theWindowOffset.v,false);
- (**theWindDocHndl).theVScrollBar = GetNewControl (rVScrollBar,(WindowPtr)theCWindow);
- (**theWindDocHndl).theHScrollBar = GetNewControl (rHScrollBar,(WindowPtr)theCWindow);
- (**theWindDocHndl).theColorsPalette = nil; // not used by image window
- (**theWindDocHndl).isColorsWindow = false;
- if ((**theWindDocHndl).theVScrollBar == nil || (**theWindDocHndl).theHScrollBar == nil)
- {
- DisposeWindow((WindowPtr)theCWindow);
- return kDefaultAppError;
- }
-
- MoveControl((**theWindDocHndl).theVScrollBar,
- theCWindow->portRect.right - kScrollBarWidth,theCWindow->portRect.top - 1);
- MoveControl((**theWindDocHndl).theHScrollBar,
- theCWindow->portRect.left - 1,theCWindow->portRect.bottom - kScrollBarWidth);
- SizeControl((**theWindDocHndl).theVScrollBar,16,
- (theCWindow->portRect.bottom - theCWindow->portRect.top)-13);
- SizeControl((**theWindDocHndl).theHScrollBar,
- (theCWindow->portRect.right - theCWindow->portRect.left)-13,16);
- theWPalette =
- NewPalette(256,(**(*(**theWindDocHndl).theImageWorld).portPixMap).pmTable,pmTolerant+pmExplicit,0);
- NSetPalette((WindowPtr)theCWindow,theWPalette,pmAllUpdates);
- ShowControl((**theWindDocHndl).theVScrollBar);
- ShowControl((**theWindDocHndl).theHScrollBar);
- SetControlMinimum((**theWindDocHndl).theVScrollBar,0);
- SetControlMinimum((**theWindDocHndl).theHScrollBar,0);
- maxXsize = (*theWindDocHndl)->theImageWorld->portRect.right -
- ((theCWindow->portRect.right - kScrollBarWidth) - theCWindow->portRect.left);
- maxYsize = (*theWindDocHndl)->theImageWorld->portRect.bottom -
- ((theCWindow->portRect.bottom - kScrollBarWidth) - theCWindow->portRect.top);
- SetControlMaximum((**theWindDocHndl).theVScrollBar,maxYsize);
- SetControlMaximum((**theWindDocHndl).theHScrollBar,maxXsize);
- SetControlValue((**theWindDocHndl).theVScrollBar,0);
- SetControlValue((**theWindDocHndl).theHScrollBar,0);
- ShowWindow((WindowPtr)theCWindow);
- DrawGrowIcon((WindowPtr)theCWindow);
- return error;
- }
-
-
- // Close an application window
-
- #pragma segment windows
- void DisposeImageWindow (WindowPtr window)
- {
- ImageDocHndl theDocRefCon;
- MenuHandle theMenu;
- WindowPtr theWindow;
- Str255 theString;
- short count;
-
- // check if the window to close is a valid Document window
- if ((theDocRefCon=(ImageDocHndl)GetWRefCon(window)) != 0)
- {
- // dispose of the window document structure
- if (!(**theDocRefCon).isColorsWindow)
- DeleteDocNameFromMenu (theDocRefCon);
- else
- {
- GetIndString (theString,rMenuItems,iShowColors);
- SetMenuItemText (GetMHandle(mWindow),iColors,theString);
- if ((**theDocRefCon).theColorsPalette) // Direct color images have no palette
- DisposePalette((**theDocRefCon).theColorsPalette);
- }
- if ((**theDocRefCon).theVScrollBar)
- {
- DisposeControl((**theDocRefCon).theVScrollBar);
- DisposeControl((**theDocRefCon).theHScrollBar);
- }
- /**** Dispose QuickDraw specific document items ****/
- if (!(**theDocRefCon).isUsingQDGX)
- {
- if ((**theDocRefCon).theImageWorld)
- DisposeGWorld((**theDocRefCon).theImageWorld);
- if ((**theDocRefCon).hasUndoTemp)
- RemoveTempFile(theDocRefCon, true, false);
- if ((**theDocRefCon).hasRedoTemp)
- RemoveTempFile(theDocRefCon, false, true);
- }
-
- /**** Dispose of GX related objects ****/
- if ((**theDocRefCon).isUsingQDGX)
- {
- GXDisposeShape((**theDocRefCon).theGXImageShape);
- GXDisposeInk((**theDocRefCon).theInkShape);
- GXDisposeViewPort((**theDocRefCon).theGxChildView);
- GXDisposeViewPort((**theDocRefCon).theGXview);
- }
- DisposeHandle((Handle)theDocRefCon);
- DisposeWindow(window);
- theWindow = FrontWindow();
- if (theWindow == nil || gNumOpenWindows == 0)
- {
- if (ColorWindowVisible())
- DisposeColorsWindow();
- theMenu = GetMHandle(mFile);
- DisableItem(theMenu,iClose);
- DisableItem(theMenu,iCloseAll);
- DisableItem(theMenu,iSaveAs);
- DisableItem(theMenu,iRevert);
- DisableItem(GetMHandle(mWindow),iColors);
- theMenu = GetMHandle(mFilters);
- for (count = iSmoothFilter;count <= iHiPassFilter; ++count)
- DisableItem(theMenu,count);
- theMenu = GetMHandle(mEffects);
- for (count = iInvert;count <= iRotate180; ++count)
- DisableItem(theMenu,count);
- /**** Reset undo menu item text ****/
- SetUndoItemText(kCannotUndo);
- ForceRestoreColors();
- }
- else
- {
- theDocRefCon=(ImageDocHndl)GetWRefCon(theWindow);
- switch ((*theDocRefCon)->theUndoState)
- {
- case kCannotUndo:
- SetUndoItemText(kCannotUndo);
- break;
- case kCanUndo:
- SetUndoItemText(kCanUndo);
- break;
- case kCanRedo:
- SetUndoItemText(kCanRedo);
- break;
- }
- }
- }
- }
-
-
- /***** Perform update operation for image and colors windows for both imaging models ****/
-
- #pragma segment windows
- void DoWindowUpdate(WindowPtr theWindow)
- {
- PixMapHandle thePixMapHndl = nil;
- ImageDocHndl theWindDocHndl;
- WindowPtr oldPort;
-
- GetPort(&oldPort);
- SetPort(theWindow);
- BeginUpdate(theWindow);
- theWindDocHndl = (ImageDocHndl)GetWRefCon(theWindow);
- if (theWindDocHndl && (**theWindDocHndl).isColorsWindow == false &&
- (**theWindDocHndl).isUsingQDGX == false)
- {
- TransferImageToWindow(theWindDocHndl,theWindow); // Color QD content region update
- UpdateControls(theWindow,theWindow->visRgn);
- DrawGrowIcon(theWindow);
- }
- else if (theWindDocHndl &&
- (**theWindDocHndl).isColorsWindow == false &&
- (**theWindDocHndl).isUsingQDGX)
- {
- UpdateGXObjectDisplay(theWindDocHndl, theWindow);
- UpdateControls(theWindow,theWindow->visRgn);
- DrawGrowIcon(theWindow);
- }
- else if ((**theWindDocHndl).isColorsWindow &&
- (**theWindDocHndl).isUsingQDGX == false)
- DrawImageColors(theWindow);
- EndUpdate(theWindow);
- SetPort (oldPort);
- }
-
-
- /**** Create new Image Colors Window ****/
-
- #pragma segment windows
- OSErr CreateColorsWindow(void)
- {
- ImageDocHndl theColorsDocHndl = nil,
- theFoundDocHndl = nil;
- CWindowPtr theWindow;
- WindowPtr theFrontWindow;
- Str255 theString;
- OSErr error = noErr;
-
- theWindow = (CGrafPort*)GetNewCWindow(rColorsWindow,nil,(WindowPtr)-1L);
- theColorsDocHndl = (ImageDocHndl)NewHandle(sizeof(ImageDoc)); // alloc new image document
- if (theColorsDocHndl)
- {
- SetWRefCon((WindowPtr)theWindow,(long)theColorsDocHndl); // set refcon to doc handle
- (**theColorsDocHndl).theImageWorld = nil;
- (**theColorsDocHndl).theVScrollBar = nil;
- (**theColorsDocHndl).theHScrollBar = nil;
- (**theColorsDocHndl).isColorsWindow = true;
- (**theColorsDocHndl).theColorsPalette = nil; // initialise to nil as direct images have no palette info
- (**theColorsDocHndl).isUsingQDGX = false;
- (**theColorsDocHndl).theUndoState = kCannotUndo;
- (**theColorsDocHndl).hasUndoTemp = false;
- (**theColorsDocHndl).hasRedoTemp = false;
- theFrontWindow = FrontWindow();
- theFoundDocHndl = (ImageDocHndl)GetWRefCon(theFrontWindow);
- (**theColorsDocHndl).theImageDepth = (**theFoundDocHndl).theImageDepth;
- SetWTitle((WindowPtr)theWindow,"\pImage Colors");
- SizeWindow((WindowPtr)theWindow,128+32,32+32,false);
- ShowWindow((WindowPtr)theWindow);
- if ((**theFoundDocHndl).theImageDepth <= 8) // create palette for indexed images
- {
- if (!(**theFoundDocHndl).isUsingQDGX)
- (**theColorsDocHndl).theColorsPalette =
- NewPalette(256,
- (**(*(**theFoundDocHndl).theImageWorld).portPixMap).pmTable,
- pmTolerant+pmExplicit,0);
- else
- (**theColorsDocHndl).theColorsPalette =
- NewPalette((**theFoundDocHndl).theImageDepth,
- nil,pmTolerant+pmExplicit,0);
-
- if ((**theColorsDocHndl).theColorsPalette)
- NSetPalette((WindowPtr)theWindow,(**theColorsDocHndl).theColorsPalette,pmAllUpdates);
- else
- return kFailMakePalette;
- }
- GetIndString (theString,rMenuItems,iHideColors);
- SetMenuItemText (GetMHandle(mWindow),iColors,theString);
- SetUndoItemText((*theColorsDocHndl)->theUndoState);
- }
- else
- error = kDefaultAppError;
- return error;
- }
-
-
- /**** Dispose of Current image Colors window ****/
-
- #pragma segment windows
- OSErr DisposeColorsWindow(void)
- {
- ImageDocHndl theDocHndl = nil;
- WindowPtr theWindow,
- theNextWindow;
- OSErr error = noErr;
-
- theWindow = FrontWindow();
- while (theWindow)
- {
- theDocHndl = (ImageDocHndl)GetWRefCon(theWindow);
- if ((**theDocHndl).isColorsWindow)
- {
- DisposeImageWindow (theWindow);
- return error;
- }
- theNextWindow = &((WindowPeek)theWindow)->nextWindow->port;
- theWindow = theNextWindow;
- }
- return kDefaultAppError;
- }
-
-
- /**** determine maximum window size ****/
-
- #pragma segment windows
- OSErr CalcMaxImageWindowSize(ImageDocHndl theWindDocHndl)
- {
- GDHandle theMainGDevHndl;
- Rect maxWindowSize,
- theImageSize;
- short theMenuHeight;
- OSErr error = noErr;
-
- SetRect(&theImageSize,0,0,(**theWindDocHndl).theImageXSize+kScrollBarWidth,
- (**theWindDocHndl).theImageYSize+kScrollBarWidth);
- theMainGDevHndl = GetMainDevice();
- maxWindowSize = (**theMainGDevHndl).gdRect;
- theMenuHeight = GetMBarHeight();
- maxWindowSize.bottom -=theMenuHeight+20;
- maxWindowSize.right -= 20;
- if (((**theWindDocHndl).theImageXSize+kScrollBarWidth) < (maxWindowSize.right - maxWindowSize.left) &&
- ((**theWindDocHndl).theImageYSize+kScrollBarWidth) < (maxWindowSize.bottom - maxWindowSize.top))
- {
- (**theWindDocHndl).theMaxWindowSize = theImageSize;
- }
- else
- {
- /**** Set max window size depth and width to not larger than main screen or image ****/
- (**theWindDocHndl).theMaxWindowSize = maxWindowSize;
- if (((**theWindDocHndl).theImageXSize+kScrollBarWidth) < (maxWindowSize.right - maxWindowSize.left))
- {
- (**theWindDocHndl).theMaxWindowSize.left = theImageSize.left;
- (**theWindDocHndl).theMaxWindowSize.right = theImageSize.right;
- }
- if (((**theWindDocHndl).theImageYSize+kScrollBarWidth) < (maxWindowSize.bottom - maxWindowSize.top))
- {
- (**theWindDocHndl).theMaxWindowSize.top = theImageSize.top;
- (**theWindDocHndl).theMaxWindowSize.bottom = theImageSize.bottom;
- }
- }
- return error;
- }
-
-
- /**** position next open image window staggered on main window to front most image window ****/
-
- #pragma segment windows
- Point CalcNextWindowPosition(ImageDocHndl theDocHndl)
- {
- ImageDocHndl theWindDocHndl;
- WindowPtr theWindow,
- theNextWindow,
- oldPort;
- Point theWindowOffset;
- short theMenuHeight;
-
- GetPort(&oldPort);
- theMenuHeight = GetMBarHeight();
- theWindow = FrontWindow();
- if (!theWindow)
- {
- theWindowOffset.h = 0;
- theWindowOffset.v = theMenuHeight+18;
- return theWindowOffset;
- }
- theWindDocHndl = (ImageDocHndl)GetWRefCon(theWindow);
- if (!(**theWindDocHndl).isColorsWindow)
- {
- SetPort(theWindow);
- theWindowOffset.h = theWindow->portRect.left;
- theWindowOffset.v = theWindow->portRect.top;
- LocalToGlobal(&theWindowOffset);
- }
- else
- {
-
- do {
- theNextWindow = &((WindowPeek)theWindow)->nextWindow->port;
- theWindow = theNextWindow;
- theWindDocHndl = (ImageDocHndl)GetWRefCon(theWindow);
- } while (theWindow && (**theWindDocHndl).isColorsWindow);
- if (theWindow)
- {
- SetPort(theWindow);
- theWindowOffset.h = theWindow->portRect.left;
- theWindowOffset.v = theWindow->portRect.top;
- LocalToGlobal(&theWindowOffset);
- }
- else
- {
- theWindowOffset.h = 0;
- theWindowOffset.v = 0;
- }
- }
- theWindowOffset.h +=18;
- theWindowOffset.v +=18;
- TestWindowFitMainScrn(theDocHndl, &theWindowOffset);
- SetPort(oldPort);
- return theWindowOffset;
- }
-
-
- /**** Test for window fit main screen ****/
-
- #pragma segment windows
- void TestWindowFitMainScrn(ImageDocHndl theDocHndl, Point *windowOffset)
- {
- GDHandle theMainGDevHndl;
- Rect mainScrnSize,
- *maxWindowSize;
- Point theWindowOffset;
- short theMenuHeight;
-
- theMainGDevHndl = GetMainDevice();
- mainScrnSize = (**theMainGDevHndl).gdRect;
- theMenuHeight = GetMBarHeight();
- mainScrnSize.bottom -=theMenuHeight+20;
- maxWindowSize = &(*theDocHndl)->theMaxWindowSize;
- if ((maxWindowSize->right+windowOffset->h) > mainScrnSize.right)
- {
- windowOffset->h = 0;
- if ((maxWindowSize->right+windowOffset->h) > mainScrnSize.right)
- maxWindowSize->right = mainScrnSize.right - 20;
- }
- if ((maxWindowSize->bottom+windowOffset->v) > mainScrnSize.bottom)
- {
- windowOffset->v = theMenuHeight+18;
- if ((maxWindowSize->bottom+windowOffset->v) > mainScrnSize.bottom)
- maxWindowSize->bottom = mainScrnSize.bottom;
- }
- }
-
-
- /**** Resize window ****/
-
- #pragma segment windows
- void HandleWindowReSize(WindowPtr theWindow,Point startPoint)
- {
- ImageDocHndl theWindDocHndl;
- WindowPtr oldPort;
- long returnCoord;
- Rect resizeBounds;
- short windWidth,
- windHeight,
- maxXsize,
- maxYsize;
-
- GetPort(&oldPort);
- theWindDocHndl = (ImageDocHndl)GetWRefCon((WindowPtr)theWindow);
- SetRect(&resizeBounds,96,96,
- (1+(**theWindDocHndl).theMaxWindowSize.right - (**theWindDocHndl).theMaxWindowSize.left),
- (1+(**theWindDocHndl).theMaxWindowSize.bottom - (**theWindDocHndl).theMaxWindowSize.top));
- returnCoord = GrowWindow(theWindow, startPoint, &resizeBounds);
- windHeight = HiWord(returnCoord);
- windWidth = LoWord(returnCoord);
- SizeWindow(theWindow, windWidth, windHeight, true);
- MoveControl((**theWindDocHndl).theVScrollBar,
- theWindow->portRect.right - kScrollBarWidth,theWindow->portRect.top - 1);
- MoveControl((**theWindDocHndl).theHScrollBar,
- theWindow->portRect.left - 1,theWindow->portRect.bottom-kScrollBarWidth);
- SizeControl((**theWindDocHndl).theVScrollBar,16,
- (theWindow->portRect.bottom - theWindow->portRect.top)-13);
- SizeControl((**theWindDocHndl).theHScrollBar,
- (theWindow->portRect.right - theWindow->portRect.left)-13,16);
- maxXsize = (*theWindDocHndl)->theImageWorld->portRect.right -
- ((theWindow->portRect.right - kScrollBarWidth) - theWindow->portRect.left);
- maxYsize = (*theWindDocHndl)->theImageWorld->portRect.bottom -
- ((theWindow->portRect.bottom - kScrollBarWidth) - theWindow->portRect.top);
- SetControlMaximum((**theWindDocHndl).theVScrollBar,maxYsize);
- SetControlMaximum((**theWindDocHndl).theHScrollBar,maxXsize);
- SetPort(theWindow);
- InvalRect(&theWindow->portRect);
- SetPort(oldPort);
- }
-
-
- /**** Display Progres Bar Dialog *****/
-
- #pragma segment windows
- void DisplayProgressBarDlog(short updateState, short controlValue, short theStrGroup, short theStrID)
- {
- static ControlHandle theControl;
- static GrafPtr oldPort;
- static CWindowPtr theProgressWindow;
- Str255 theProgressStr;
-
- GetPort(&oldPort);
- // Perform operations on dialog and progress control dependent on updateState parameter
- switch (updateState)
- {
- case kDisplayProgressWindow:
- DisableAllMenus(true);
- theProgressWindow = (CWindowPtr) GetNewCWindow(rProgressBarWindow,nil,((WindowPtr)-1L));
- SetPort ((WindowPtr)theProgressWindow);
- theControl=GetNewControl(rProgressCntl, (WindowPtr)theProgressWindow);
- MoveControl(theControl,20,32);
- ShowControl(theControl);
- GetIndString (theProgressStr,theStrGroup,theStrID);
- if (theStrGroup != 0)
- {
- MoveTo(20,64);
- DrawString(theProgressStr);
- }
- break;
- case kUpdateProgressWindow:
- SetPort ((WindowPtr)theProgressWindow);
- SetControlValue(theControl,controlValue);
- break;
- case kDisposeProgressWindow:
- DisposeControl(theControl);
- DisposeWindow((WindowPtr)theProgressWindow);
- DisableAllMenus(false);
- break;
- }
- SetPort(oldPort);
- }
-
-
- /**** Display Startup splash screen *****/
-
- #pragma segment windows
- void SplashScreen(short theDelayLength)
- {
- WindowPtr theWindow,
- oldPort;
- PicHandle thePict = nil;
- signed long currentTime,
- delayTime;
-
- GetPort(&oldPort);
- thePict=GetPicture(rSplashPICT);
- if (thePict==nil)
- return;
- theWindow=GetNewWindow(rSplashWindow,nil,(WindowPtr)-1L);
- SetPort(theWindow);
- HLock((Handle)thePict);
- DrawPicture(thePict,&theWindow->portRect);
- HUnlock((Handle)thePict);
- DisposeHandle((Handle)thePict);
- currentTime=LMGetTicks();
- delayTime = currentTime+theDelayLength;
- do
- {
- currentTime = LMGetTicks();
- }while (currentTime < delayTime);
- DisposeWindow((GrafPtr)theWindow);
- SetPort(oldPort);
- }
-
-
- /**** Test for open colors window ****/
-
- #pragma segment windows
- Boolean ColorWindowVisible(void)
- {
- Str255 theItemString,
- theResString;
- Boolean isVisible = false;
-
- GetMenuItemText(GetMHandle(mWindow),iColors,theItemString);
- GetIndString (theResString,rMenuItems,iHideColors);
- if (EqualString(theItemString,theResString,true,true))
- isVisible = true;
- return isVisible;
- }
-